package hehe.container.format;

import hehe.container.build.annotation.Format;
import hehe.container.util.ReflectUtil;

import java.lang.reflect.Field;
import java.util.List;
import java.util.ArrayList;

/**
 * List类型转换
 *<B>说明：</B>
 *<pre>
 * 略
 *</pre>
 *<B>示例：</B>
 *<pre>
 *  略
 *</pre>
 *<B>日志：</B>
 *<pre>
 *  略
 *</pre>
 *<B>注意事项：</B>
 *<pre>
 *  略
 *</pre>
 */
@Format(
        dataFormat="ListFormat",
        formatTypes={"java.util.List","List"},
        formatArgs={List.class,Field.class}
)
public class ListFormat extends DataFormat
{
    public static Object parse(List<Object> values, Field field)
    {
        String valueType = ReflectUtil.getFieldType(field,0);
        List<Object> attrValue = new ArrayList<>();
        Object formatValue;
        for (Object value : values) {
            try {
                formatValue = DataFormat.invoke(valueType,value,field);
                attrValue.add(formatValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return attrValue;
    }
}
